package day02;

public class Test01 {

	
	/*
	 * 题目：输入两个正整数m和n，求其最大公约数和最小公倍数。
	程序分析：利用辗除法。
	辗除法求最大公约数，
	先求m/n的余数，如果余数等于0，则两数相等
	如果余数不等于0，则用n去除余数，再判断余数是否等于0
	一直循环下去，得到余数等于0，则就取到了最大公约数了

	最小公倍数：
	由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积，
	所以，用两个数的积除于最大公约数就的到最小公倍数；
	
	 * */
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int x=16;
		int y=12;
		int max=demo(x,y);
		System.out.println("最大公约数为："+max);
		System.out.println("最小公倍数为："+(x*y/max));
		
		/*demo2(16,12);*/
		
	}
	
	//递归算法求最大公约数
	private static int demo(int x,int y) {
		if(x%y==0) {
			return y;
		}else {
			int temp=x%y;
			x=y;
			y=temp;
			return demo(x,y);
			
		}
	
		
	}
	
	//非递归方法求最大公约数
	private static void demo2(int x,int y) {
		int ch=x*y;
		int max=0;	
			while(true) {
				if(x%y==0) {
					max=y;
					break;
					
				}else {
					int temp=x%y;
					x=y;
					y=temp;	
				}
				
			}
			System.out.println("最大公约数是"+max);
			System.out.println("最小公倍数是:"+ch/max);
				
	
	}
	
}
